﻿using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace DKPScoreWebApi.Models
{
    /// <summary>
    /// 工会实体类
    /// 代表一个魔兽世界工会或其他游戏组织
    /// </summary>
    public class Guild
    {
        /// <summary>
        /// 工会ID，主键，自增
        /// </summary>
        [Key]
        public int Id { get; set; }

        /// <summary>
        /// 工会名称，必填字段
        /// </summary>
        [Required]
        [MaxLength(100)]
        public string Name { get; set; }

        /// <summary>
        /// 工会描述，可选字段
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// 游戏类型，默认为魔兽世界(wow)
        /// 可扩展支持其他游戏
        /// </summary>
        [MaxLength(50)]
        public string GameType { get; set; } = "wow";

        /// <summary>
        /// 创建者用户ID，外键关联WxUser
        /// </summary>
        [Required]
        public int CreatedBy { get; set; }

        /// <summary>
        /// 工会状态，true表示活跃，false表示已删除
        /// </summary>
        public bool IsActive { get; set; } = true;

        /// <summary>
        /// 工会创建时间
        /// </summary>
        public DateTime CreatedAt { get; set; } = DateTime.Now;

        // 导航属性
        /// <summary>
        /// 工会创建者信息
        /// </summary>
        [ForeignKey("CreatedBy")]
        public virtual WxUser Creator { get; set; }

        /// <summary>
        /// 工会成员列表
        /// </summary>
        public virtual ICollection<GuildMember> Members { get; set; }

        /// <summary>
        /// 工会积分项目列表
        /// </summary>
        public virtual ICollection<PointItem> PointItems { get; set; }

        /// <summary>
        /// 工会管理员列表
        /// </summary>
        public virtual ICollection<GuildAdmin> Admins { get; set; }
    }
}
